package com.cy.pj.module.controller;

import com.cy.pj.module.pojo.ResponseResult;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;


/**
 * 在这个Controller中演示如何将对象转化为Json格式的字符串，然后响应到客户端
 *
 * 思考：问什么要将数据转换为json
 * ---1》json是一种轻量级(解析非常方便)的数据格式:(key:value,key:value,...)
 * ---2》json这种数据格式非常适合跨端使用
 */






//@Controller
//@ResponseBody
@RestController
public class JsonObjectController {

    //方法返回值不再是一个view，并告诉spring将响应结果转换为json格式字符串，
    //然后写入到http响应体中，最后传输到客户端
//    @ResponseBody
    @RequestMapping("doConvertResponseToJson")
    public ResponseResult doConvertResponseToJson() {
        ResponseResult r = new ResponseResult();
        r.setCode(200);
        r.setMessage("update ok");
        return r;
    }

//    @ResponseBody
    @RequestMapping("/doPrintJSON")
    public void doPrint(HttpServletResponse response) throws Exception {
        Map<String, Object> map = new HashMap<>();
        map.put("username", "刘德华");
        map.put("state", true);
        //将map中的数据转换为json格式字符串
        String jsonStr = new ObjectMapper().writeValueAsString(map);

        response.setCharacterEncoding("utf-8");//设置响应数据编码
        response.setContentType("text/html;charset=utf-8");//设置相应到客户端的内容类型
        response.getWriter().println(jsonStr);

    }
}
